package org.leetcode.middle.leetcode454;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class Solution
{
    public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4)
    {

        //getOrDefault(key,defaultValue)的作用是：检查map中有没有对应的key，如果有返回对应的value，没有将defaultValue返回.

        int result = 0;

        Map<Integer,Integer> map = new HashMap<>();

        //将前两个数组中的数据进行相加存放到map中
        for (int i :nums1) {
            for (int j:nums2)
            {
                int sum =i+j;
                //用来统计次数。如果map中没有，在map进行添加，次数设置为1；如果map中存在，在原有的次数上加1。
                Integer time = map.getOrDefault(sum, 0);
                map.put(sum,time+1);
            }
        }

        //统计后两个数组中的数据
        for (int i: nums3)
        {
            for (int j:nums4)
            {
                //如果map中存在-sum,说明四个数组中存在相加等于0的组合，取出对应的次数。
                int sum=i+j;
                Integer time = map.getOrDefault(-sum, 0);
                result = time+result;
            }
        }

        return result;
    }

    public static void main(String[] args)
    {
//        int []nums1 = {1,2}, nums2 = {-2,-1}, nums3 = {-1,2}, nums4 = {0,2};
//
//        LRUCache solution = new LRUCache();
//        int count = solution.fourSumCount(nums1, nums2, nums3, nums4);
//        System.out.println(count);

        Map<Integer,Integer> map = new HashMap<>();

        map.put(2,2);

        map.put(2,map.getOrDefault(3,0));
    }
}
